#include <sys/types.h>   
#include <sys/socket.h>   
#include <netinet/in.h>   
#include <arpa/inet.h>   
#include <time.h>   
#include <string.h>   
#include <stdio.h>   
#include <unistd.h>   
#include <stdlib.h>  
#define HELLO_PORT  8999
#define HELLO_GROUP "239.255.255.250"   
typedef struct { 
  char  MsgCmd[20];
  int    MsgType;
  char  DeviceType[36];
  int    DataPort;
}__attribute__((__packed__)) MULTI_CAST_DISCOVERY; 


int main(int argc, char *argv[])   
{   
    struct sockaddr_in addr;   
    int fd;   
    /* create what looks like an ordinary UDP socket */   
    if ((fd=socket(AF_INET,SOCK_DGRAM,0)) < 0)    
    {   
        perror("socket");   
        exit(1);   
    }   
    /* set up destination address */   
    memset(&addr,0,sizeof(addr));   
    addr.sin_family=AF_INET;   
    addr.sin_addr.s_addr=inet_addr(HELLO_GROUP);   
    addr.sin_port=htons(HELLO_PORT);   
    /* now just sendto() our destination! */   
    while (1)   
    {   
        MULTI_CAST_DISCOVERY discovery;
        memset((void*)&discovery,0x00,sizeof(MULTI_CAST_DISCOVERY));
        strcpy(discovery.MsgCmd,"hitedevice");
        discovery.MsgType=0;
        strcpy(discovery.DeviceType,"panel-901.6");

        discovery.DataPort=16544;


        if (sendto(fd,(const void*)&discovery, sizeof(discovery), 0, (struct sockaddr *) &addr, sizeof(addr)) < 0)    
        {   
            perror("sendto");   
            exit(1);   
        }   
        sleep(1);   
    }   
    return 0;   
}  
